average-case analysis